package org.cunamas.web.controller;

import java.util.ArrayList;
import java.util.List;

import javax.faces.model.SelectItem;

import org.cunamas.core.dto.AsistenciaGrupoEtareoDto;
import org.cunamas.core.dto.GraficoBarrasDto;
import org.cunamas.core.dto.CoberturaAtencionDto;
import org.cunamas.core.dto.Filtros;
import org.cunamas.core.service.ReportesCunamasService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

@Component
@Scope("session")
public class IndicatorsMonitoringController {
	
	@Autowired
	private ReportesCunamasService cunamasService;
	
	private List<CoberturaAtencionDto> coberturaAtencionDtos = new ArrayList<CoberturaAtencionDto>();
	
	private List<AsistenciaGrupoEtareoDto> grupoEtareoDtos = new ArrayList<AsistenciaGrupoEtareoDto>();
	
	private List<GraficoBarrasDto> tallaEdadDtos = new ArrayList<GraficoBarrasDto>();
	
	private List<GraficoBarrasDto> pesoTallaDtos = new ArrayList<GraficoBarrasDto>();
		
	private List<SelectItem> listaProv = new ArrayList<SelectItem>();
	
	private List<SelectItem> listaDis = new ArrayList<SelectItem>();

	private List<SelectItem> listaDep = new ArrayList<SelectItem>();
	
	private List<SelectItem> listaSede = new ArrayList<SelectItem>();
	
	private List<SelectItem> listaComite = new ArrayList<SelectItem>();
	
	private String departamento;
	private String provincia;
	private String distrito;
	private String comite;
	private String sede;
	private String anio;
	private String mes;
	
	private String onload = "";

	
	
	public void generarReporte(){		
		
		String ubigeo=departamento+provincia+distrito;
		Filtros filtros = new Filtros(ubigeo,sede,comite,anio,mes);
		
		System.out.println("/******************GENERANDO REPORTE COBERTURA ATENCION************/");
		coberturaAtencionDtos=cunamasService.retornaCoberturaAtencion(filtros);		
		if(coberturaAtencionDtos==null) coberturaAtencionDtos = new ArrayList<CoberturaAtencionDto>();
		System.out.println("/******************GENERANDO REPORTE ASISTENCIA GRUPO ETAREOS************/");
		grupoEtareoDtos=cunamasService.retornaAsistenciaGrupoEtareo(filtros);
		if(grupoEtareoDtos==null) grupoEtareoDtos = new ArrayList<AsistenciaGrupoEtareoDto>();
		System.out.println("/******************GENERANDO REPORTE ATENCION INTEGRAL TALLA EDAD************/");
		tallaEdadDtos=cunamasService.retornaAtencionIntegralTallaEdad(filtros);
		if(tallaEdadDtos==null) tallaEdadDtos = new ArrayList<GraficoBarrasDto>();
		System.out.println("/******************GENERANDO REPORTE ATENCION INTEGRAL PESO TALLA************/");
		pesoTallaDtos=cunamasService.retornaAtencionIntegralPesoTalla(filtros);
		if(pesoTallaDtos==null) pesoTallaDtos = new ArrayList<GraficoBarrasDto>();
	}
	
	

	public String getOnload() {
		listaDep.clear();
		listaDis.clear();
		listaProv.clear();
		listaSede.clear();
		listaComite.clear();
		listaDep = cunamasService.retornaDepartamentos();
		return onload;
	}

	public void cargaComite(){
		listaComite.clear();
		if(distrito!="00"){
		String ubigeo=departamento+provincia+distrito;
		listaComite = cunamasService.retornaComite(ubigeo);
		}else{
			listaComite.clear();
		}
	}
	
	public void cargaProvincias(){
		listaProv.clear();
		listaDis.clear();
		listaSede.clear();
		
		if(departamento!="00"){
			listaProv = cunamasService.retornaProvincia(departamento);
			listaSede = cunamasService.retornaSede(departamento);
		}else{
			listaDis.clear();
			listaProv.clear();
			listaSede.clear();
		}	
	}
	
	
	public void cargaDistrito(){
		listaDis.clear();
		if(provincia!="00")
			listaDis = cunamasService.retornaDistrito(departamento+provincia);
		else{
			listaProv.clear();
		}
	}
	
	public void setOnload(String onload) {
		this.onload = onload;
	}

	

	public List<CoberturaAtencionDto> getCoberturaAtencionDtos() {
		return coberturaAtencionDtos;
	}

	public void setCoberturaAtencionDtos(
			List<CoberturaAtencionDto> coberturaAtencionDtos) {
		this.coberturaAtencionDtos = coberturaAtencionDtos;
	}



	public String getDepartamento() {
		return departamento;
	}



	public void setDepartamento(String departamento) {
		this.departamento = departamento;
	}



	public String getProvincia() {
		return provincia;
	}



	public void setProvincia(String provincia) {
		this.provincia = provincia;
	}



	public String getDistrito() {
		return distrito;
	}



	public void setDistrito(String distrito) {
		this.distrito = distrito;
	}



	public String getSede() {
		return sede;
	}



	public void setSede(String sede) {
		this.sede = sede;
	}



	public String getAnio() {
		return anio;
	}



	public void setAnio(String anio) {
		this.anio = anio;
	}



	public String getMes() {
		return mes;
	}



	public void setMes(String mes) {
		this.mes = mes;
	}



	public List<SelectItem> getListaProv() {
		return listaProv;
	}



	public void setListaProv(List<SelectItem> listaProv) {
		this.listaProv = listaProv;
	}



	public List<SelectItem> getListaDis() {
		return listaDis;
	}



	public void setListaDis(List<SelectItem> listaDis) {
		this.listaDis = listaDis;
	}



	public List<SelectItem> getListaDep() {
		return listaDep;
	}



	public void setListaDep(List<SelectItem> listaDep) {
		this.listaDep = listaDep;
	}



	public List<SelectItem> getListaSede() {
		return listaSede;
	}



	public void setListaSede(List<SelectItem> listaSede) {
		this.listaSede = listaSede;
	}



	public List<AsistenciaGrupoEtareoDto> getGrupoEtareoDtos() {
		return grupoEtareoDtos;
	}



	public void setGrupoEtareoDtos(List<AsistenciaGrupoEtareoDto> grupoEtareoDtos) {
		this.grupoEtareoDtos = grupoEtareoDtos;
	}



	public List<GraficoBarrasDto> getTallaEdadDtos() {
		return tallaEdadDtos;
	}



	public void setTallaEdadDtos(List<GraficoBarrasDto> tallaEdadDtos) {
		this.tallaEdadDtos = tallaEdadDtos;
	}



	public List<GraficoBarrasDto> getPesoTallaDtos() {
		return pesoTallaDtos;
	}



	public void setPesoTallaDtos(List<GraficoBarrasDto> pesoTallaDtos) {
		this.pesoTallaDtos = pesoTallaDtos;
	}



	public List<SelectItem> getListaComite() {
		return listaComite;
	}



	public void setListaComite(List<SelectItem> listaComite) {
		this.listaComite = listaComite;
	}



	public String getComite() {
		return comite;
	}



	public void setComite(String comite) {
		this.comite = comite;
	}

}